package com.cy.shiro.util;

import com.cy.shiro.consts.CommonConst;
import org.springframework.web.servlet.ModelAndView;

import java.util.Map;

public class ResultUtil {

    /**
     * 返回json
     * @param code 状态码
     * @param message 提示信息
     * @param data map或集合
     * @return
     */
    public static ResultObject vo(int code, String message, Object data){
        return new ResultObject(code, message, data);
    }

    /**
     * 视图
     * @param view
     * @return
     */
    public static ModelAndView view(String view){
        return new ModelAndView(view);
    }

    /**
     * 视图和模型
     * @param view
     * @param model
     * @return
     */
    public static ModelAndView view(String view, Map<String, Object> model){
        return new ModelAndView(view, model);
    }

    /**
     * 重定向
     * @param view
     * @return
     */
    public static ModelAndView redirect(String view){
        return new ModelAndView("redirect:" + view);
    }

    /**
     * 自定义code
     * @param code 错误码
     * @param message 提示信息
     * @return
     */
    public static ResultObject error(int code, String message){
        return vo(code, message, null);
    }

    /**
     * 内部错误码500
     * @param message 提示信息
     * @return
     */
    public static ResultObject error(String message){
        return vo(CommonConst.DEFAULT_ERROR_CODE, message, null);
    }


    /**
     * 成功：200
     * @param message 提示信息
     * @return
     */
    public static ResultObject success(String message){
        return vo(CommonConst.DEFAULT_SUCCESS_CODE, message, null);
    }

    /**
     * 成功：200
     * @param message 提示信息
     * @param data 数据
     * @return
     */
    public static ResultObject success(String  message, Object data){
        return vo(CommonConst.DEFAULT_SUCCESS_CODE, message, data);
    }

    /**
     * 自定义返回状态码
     * @param code 状态码
     * @param message 提示信息
     * @param data 数据
     * @return
     */
    public static ResultObject json(int code, String message, Object data){
        return vo(code, message, data);
    }

    /**
     * bootstrap 数据表格
     * @param rows  数据列表
     * @param total 总记录数
     * @return
     */
    public static ResultTableJson tableJson(Object rows, int total,Object parameter){
        return new ResultTableJson(rows, total, parameter);
    }

    /**
     * bootstrap 数据表格
     * @param rows  数据列表
     * @param total 总记录数
     * @return
     */
    public static ResultTableJson bootstrapTableJson(Object rows, int total, Object parameter){
        return tableJson(rows, total, parameter);
    }

}
